package com.ctshk.rpc.season.service;

import com.ctshk.rpc.season.dto.PackageProductCostDTO;
import com.ctshk.rpc.season.dto.SeasonFixedProductPackageAirDTO;
import com.ctshk.rpc.season.req.SeasonFixedProductPackageAirReq;
import com.ctshk.rpc.season.req.UpdatePackageProductReq;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * <p>
 * 套票-固定套票单项产品打包-机票表 服务类
 * </p>
 *
 * @author 杨林
 * @since 2021-03-09
 */
public interface ISeasonFixedProductPackageAirService {

    /* @MethodName: 获取机票的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/26 17:09
     **/
    PackageProductCostDTO getAirProductPrice(Long productId, LocalDate departureDate, Long userId, Integer channelType);

    /* @MethodName: 获取 固定套票默认机票的价格
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/19 14:44
     **/
    BigDecimal getDefaultAirPrice(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageAirDTO> getDefaultAirData(Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    List<SeasonFixedProductPackageAirDTO> getAirByPackageId(String tripType, Long packageId, LocalDate departDate, LocalDate arrDate, Long userId, Integer channelType);

    /* @MethodName: 批量保存机票产品信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/9 17:54
     **/
    void batchAirProduct(Long userId, Long packageId, List<SeasonFixedProductPackageAirReq> airReqList);


    /* @MethodName: 获取固定套票 飞机票相关 信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/11 11:50
     **/
    List<SeasonFixedProductPackageAirDTO> getSeasonFixedProductAirDtoList(Long packageId);

    /* @MethodName: 删除原来的飞机票产品
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/12 16:26
     **/
    void deletePreviousAir(Long userId, Long packageId);


    /* @MethodName: 获取 机票差价信息
     * @Description: TODO
     * @Param:
     * @Return:
     * @Author: 杨林
     * @Date:2021/3/23 9:59
     **/
    List<SeasonFixedProductPackageAirDTO> getAirDifferencePrice(UpdatePackageProductReq req);
}
